package com.company._3Method;

import com.company._1class.Person;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class TestMethodDemo {

    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {


        Person p = new Person();
        p.setName("赵六");

        Class c = Person.class;

        // 得到所有public的方法，包含从父类继承过来的方法
//        Method[] ms = c.getMethods();
//        for(Method m:ms)
//        {
//            System.out.println(m.toGenericString());
//        }

        // 得到本类的所有方法
//        Method[] ms = c.getDeclaredMethods();
//        for(Method m:ms)
//        {
//            System.out.println(m.toGenericString());
//        }


//        Method m = c.getMethod("work",new Class[]{});
//        System.out.println(m);

//        Method m = c.getDeclaredMethod("sleep",new Class[]{});
//        m.setAccessible(true);
//        m.invoke(p);
//        System.out.println(m);

        // 静态方法传入个null
        Method m2 = c.getMethod("aaa");
        m2.invoke(null);
    }
}
